home *** CD-ROM | disk | FTP | other *** search
/ NetNews Offline 2 / NetNews Offline Volume 2.iso / news / comp / lang / modula2 / 426 < prev    next >
Encoding:
Internet Message Format  |  1996-08-06  |  2.8 KB

  1. Path: mail2news.demon.co.uk!nezumi.demon.co.uk
  2. From: Martin Tom Brown <Martin@nezumi.demon.co.uk>
  3. Newsgroups: comp.lang.modula2
  4. Subject: Re: **HELP** Memory Allocation
  5. Date: Fri, 15 Mar 96 09:12:04 GMT
  6. Organization: Nezumi
  7. Message-ID: <826881124snz@nezumi.demon.co.uk>
  8. References: <31402188.A79@sinex.demon.co.uk> <4i2bia$f9e@seagoon.newcastle.edu.au>
  9. Reply-To: Martin@nezumi.demon.co.uk
  10. X-NNTP-Posting-Host: nezumi.demon.co.uk
  11. X-Newsreader: Demon Internet Simple News v1.29
  12. X-Mail2News-Path: nezumi.demon.co.uk
  13.  
  14. In article <4i2bia$f9e@seagoon.newcastle.edu.au>
  15.            peter@tesla.newcastle.edu.au "Peter Moylan" writes:
  16.  
  17. > Ross & Mandy (Ross&Mandy@sinex.demon.co.uk) wrote:
  18. > >For various reasons, I need to extend my data area beyond 64K 
  19. > >in Topspeed Modula-2 V3. Does anyone know how to do this? I 
  20. > >have tried near and far allocations with no joy. 
  21. > If you're talking about the total data area then this is
  22. > easy - just use the XLarge memory model - but I guess you've
  23. > already tried this.  If you're talking about the total
  24. > static data space used by one module, then the solution is
  25. > to break the module into smaller modules.
  26.  
  27. Or allocate an array of pointers to blocks of data which you
  28. allocate dynamically and then do your own indexing arithmetic.
  29. Don't you just love segmented architectures ;-)
  30.  
  31. > But if you're talking about the size of a single array,
  32. > you're most likely in trouble.  Even if you could allocate
  33. > the space, how could you fit an array subscript into a
  34. > 16-bit CARDINAL?  From memory, I don't think TopSpeed allows
  35. > LONGCARD subscripts, and even the OS/2 version of TopSpeed
  36. > still uses 16-bit arithmetic.  (This might have changed in
  37. > the Clarion version, I don't know.)  If you absolutely must
  38. > use 32-bit subscripts, you probably need another compiler.
  39.  
  40. The 32 bit pointer isn't such a problem you can use masking or
  41. MOD & DIV to convert a linear 32 bit index into the block number 
  42. and index inside block. Some compilers can be persuaded to do
  43. this as inline code (since it's a very small size overhead).
  44.  
  45. > The real question to ask, I think, is: do you really need to
  46. > organise your data into a huge array?  Once you start using
  47. > huge static data structures you tend to run into other problems,
  48. > for example efficiency-related problems.  Most problems of this
  49. > kind can be solved by better design of the data structures.
  50.  
  51. There are a few cases where if you have enough physical memory it  
  52. is worthwhile reading the whole lot in and working on it in core.
  53. N-d FFTs spring to mind as a good example of this.
  54.  
  55. OTOH it can be really *bad* on a demand paged virtual memory machine where 
  56. repeated access with large strides forces a page fault for every instruction!
  57.  
  58. Regards,
  59. -- 
  60. Martin Brown  <martin@nezumi.demon.co.uk>     __                CIS: 71651,470
  61. Scientific Software Consultancy             /^,,)__/
  62.